PrintStream এবং PrintWriter দুটি ক্লাস Java-তে আউটপুট স্ট্রিম হ্যান্ডল করার জন্য ব্যবহৃত হয়। তবে তাদের মধ্যে কিছু মৌলিক পার্থক্য রয়েছে এবং প্রতিটি ক্লাসের নিজস্ব ভূমিকা রয়েছে। PrintStream বাইনারি ডেটা এবং PrintWriter পাঠ্য ডেটা প্রিন্ট করার জন্য উপযুক্ত। এই দুটি স্ট্রিম ক্লাস ডেটা লেখার জন্য সঠিক মেথড এবং ফাংশন প্রদান করে, যা কোডকে আরো কার্যকর এবং রিডেবল করে তোলে।
PrintStream এর ভূমিকা
PrintStream একটি OutputStream ক্লাসের সাবক্লাস যা বাইনারি ডেটা এবং পাঠ্য ডেটা প্রিন্ট করার জন্য ব্যবহৃত হয়। এটি স্বয়ংক্রিয়ভাবে UTF-8 এনকোডিং সমর্থন করে এবং আপনি এর মাধ্যমে শুধুমাত্র বাইনারি ডেটা লেখার পাশাপাশি পাঠ্য ডেটাও প্রিন্ট করতে পারেন।
মুখ্য বৈশিষ্ট্য:
- Character Encoding Support: PrintStream এনকোডিং সমস্যাগুলি নিরসন করে।
- Auto-flushing: PrintStream স্বয়ংক্রিয়ভাবে ফ্লাশ হয় যখন একটি newline বা
flush()মেথড কল করা হয়। - Primitive Data Types Support: এটি
int,char,booleanইত্যাদি প্রিমিটিভ ডেটা টাইপ লেখার জন্য বিল্ট-ইন মেথড প্রদান করে।
উদাহরণ: PrintStream
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.io.IOException;
public class PrintStreamExample {
public static void main(String[] args) {
try {
// PrintStream ব্যবহার করে ফাইলে লেখা
PrintStream ps = new PrintStream(new FileOutputStream("output.txt"));
ps.println("Hello, World!");
ps.printf("Number: %d", 100);
// ব্যবহার শেষে স্ট্রিম বন্ধ করা
ps.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
- PrintStream
println()এবংprintf()মেথড ব্যবহার করে ফাইলে বা কনসোলে ডেটা প্রিন্ট করতে সক্ষম। println()মেথড একটি নতুন লাইন ছাড়াই ডেটা প্রিন্ট করে এবংprintf()ব্যবহার করে ফরম্যাটেড আউটপুট তৈরি করা হয়।
PrintWriter এর ভূমিকা
PrintWriter ক্লাসের মূল কাজ হল Character Streams এ টেক্সট ডেটা লেখা। এটি Writer ক্লাসের একটি সাবক্লাস এবং UTF-8 এনকোডিং সহ টেক্সট আউটপুট স্ট্রিমে ডেটা লেখার জন্য ব্যবহৃত হয়। PrintWriter দিয়ে আপনি স্ট্রিং, চরিত্র, সংখ্যা এবং আরও অনেক কিছু প্রিন্ট করতে পারেন।
মুখ্য বৈশিষ্ট্য:
- UTF-8 Encoding Support: PrintWriter পাঠ্য ডেটার জন্য UTF-8 এনকোডিং সমর্থন করে, যা আন্তর্জাতিকিকরণের জন্য উপযুক্ত।
- Automatic Flushing: এটি নতুন লাইন (new line) বা
flush()মেথড কল করার মাধ্যমে স্বয়ংক্রিয়ভাবে ফ্লাশ হয়। - Buffered Output: যখন আপনি ডেটা প্রিন্ট করেন, তখন এটি বাফার করে আউটপুট ফাইল বা কনসোলের মধ্যে পাঠানো হয়।
উদাহরণ: PrintWriter
import java.io.FileWriter;
import java.io.PrintWriter;
import java.io.IOException;
public class PrintWriterExample {
public static void main(String[] args) {
try {
// PrintWriter ব্যবহার করে ফাইলে লেখা
PrintWriter pw = new PrintWriter(new FileWriter("output.txt"));
pw.println("Hello, World!");
pw.printf("Formatted Number: %f", 123.456);
// ব্যবহার শেষে স্ট্রিম বন্ধ করা
pw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
- PrintWriter
println()এবংprintf()ব্যবহার করে টেক্সট ডেটা আউটপুট করে। - এটি শুধুমাত্র পাঠ্য ডেটা এবং স্ট্রিং প্রসেস করার জন্য আদর্শ। এটি
FileWriterবাOutputStreamWriterএর সাথে ব্যবহার করা যেতে পারে।
PrintStream এবং PrintWriter এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | PrintStream | PrintWriter |
|---|---|---|
| ডেটা টাইপ | বাইনারি এবং টেক্সট ডেটা | শুধুমাত্র টেক্সট ডেটা |
| স্ট্রিম ক্লাস | OutputStream এর সাবক্লাস | Writer এর সাবক্লাস |
| ফরম্যাটিং সাপোর্ট | হ্যাঁ, printf() ফাংশন ব্যবহার করা যায় | হ্যাঁ, printf() ফাংশন ব্যবহার করা যায় |
| এনকোডিং | এনকোডিং নিয়ন্ত্রণ নেই, বাইনারি ডেটা লেখার জন্য ব্যবহৃত | UTF-8 এনকোডিং সমর্থিত |
| স্ট্রিম টাইপ | Byte Stream | Character Stream |
কখন PrintStream ব্যবহার করবেন?
- Binary Data প্রিন্ট করতে, যেমন অডিও, ভিডিও বা অন্য বাইনারি ডেটা।
- UTF-8 অথবা অন্যান্য এনকোডিং ছাড়াই সাধারন প্রিন্ট আউটপুট প্রয়োজন হলে।
কখন PrintWriter ব্যবহার করবেন?
- Text Data প্রিন্ট করতে, যেমন কনফিগারেশন ফাইল, লগ ফাইল, বা সাধারন টেক্সট ডেটা।
- UTF-8 Encoding সহ পাঠ্য ডেটা লেখার জন্য।
- Text-based Formatting এর জন্য যেমন স্ট্রিং, নম্বর, তারিখ ইত্যাদি।
Tuples এবং PrintStream / PrintWriter Integration
Tuples ব্যবহার করে ডেটার একাধিক অংশকে একত্রে সংরক্ষণ করে PrintStream বা PrintWriter এর মাধ্যমে আউটপুটে পাঠানো যায়। এটি multi-value আউটপুট প্রক্রিয়া সহজ এবং কার্যকর করতে সাহায্য করে।
Example: Using Tuples with PrintWriter
import io.vavr.Tuple;
import io.vavr.Tuple2;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.io.IOException;
public class TupleWithPrintWriter {
public static void main(String[] args) {
Tuple2<String, Integer> person = Tuple.of("Alice", 30);
try (PrintWriter pw = new PrintWriter(new FileWriter("output.txt"))) {
// Print Tuple elements
pw.println("Name: " + person._1);
pw.println("Age: " + person._2);
} catch (IOException e) {
e.printStackTrace();
}
}
}
Explanation:
- এখানে Tuple2 ব্যবহার করে একটি
String(নাম) এবং একটিInteger(বয়স) একত্রে সংরক্ষণ করা হয়েছে। - PrintWriter এর মাধ্যমে ডেটা ফাইলে লেখা হয়েছে।
PrintStream এবং PrintWriter Java-তে আউটপুট লেখার জন্য শক্তিশালী টুল। PrintStream বাইনারি এবং টেক্সট ডেটা লেখার জন্য উপযুক্ত, এবং PrintWriter শুধুমাত্র পাঠ্য ডেটা প্রিন্ট করতে ব্যবহৃত হয়। Tuples ব্যবহার করে একাধিক ডেটা অংশ একটি স্থানীয় কাঠামোতে সংরক্ষণ করে এগুলোর আউটপুট প্রক্রিয়া করা যেতে পারে, যা কোডকে আরও রিডেবল এবং কার্যকর করে তোলে।
Read more